import { queryList } from '@/services/list';

export default {
    namespace: 'list',  // 命名空间
    // state 页面需要的数据都保存在这里，用的时候，从这里取
    state: {
        data: [],
    },
    // effects 里面是请求各种后端接口的方法
    effects: {
        // 有两个参数
        // 第一个：paylaod 代表是要往后端传递的参数集合
        // call:相当于ajax,即发送请求的函数
        // put：作用：拿到后端接口返回的数据之后，将数据保存到state里面
        // select:作用：可以去除当前state里面的数据
        *getListData({ payload }, { call, put, select }) {
            // payload =>{ pageSize: 10, pageNum: 1 }
            // delay(/* 1s */1000);
            const response = yield call(queryList, payload); // 第一个参数url,要传递的参数payload
        
            // put 和页面的dispatch 功能很相似
            yield put({
                type: 'save',
                payload: {
                    data: response,
                }
            });
            return response;
        },
    },

    reducers: {
        save(state, action) {
            // ... 的作用：通俗一点将，就是将数组或者对象的“皮”脱掉一层
            // 例子：[a:1]======>...[a:1]===>a:1,,,{a:1}======>...{a:1}===>a:1
            // { data:[],data:response}==>{data:response}

            // g_app._store.getState().list ：在控制台获取models里面的数组
            return { ...state, ...action.payload };
        }
    }

}